#include <iostream>
#include <string> 
using namespace std;
#define N 100010
struct node
{
	int id;
	long long w;
};
node c[N];
int n;
int lowbit(int i)
{
	return i&(-i);
}

void insert(int i,int x,int y)
{
	while(i<=n){
		c[i].id+=x;
		c[i].w+=y;
		i+=lowbit(i);
	}
}

long long getsum(int i,int choose)
{
	long long sum=0;
	if(choose==0){
		while(i>0){
			sum+=c[i].id;
			i-=lowbit(i);
		}
	}
	else{
		while(i>0){
			sum+=c[i].w;
			i-=lowbit(i);
		}
	}
	return sum;
}

int main()
{
	cin>>n;
	int a;
	memset(c,0,sizeof(c));
	long long ans=0;
	for(long long i=1;i<=n;i++){
		cin>>a;
		insert(a,1,a);
		long long k1=i-getsum(a,0);
		if(k1!=0){
			long long k2=getsum(n,1)-getsum(a,1);
			ans=ans+k1*a+k2;
		}
	}
	cout<<ans<<endl;
	return 0;
	
}

